package com.river.springbootdemo.thinkingjava.castclass;

/**
 * 运行时类型识别实验
 */
class Useful {
    public void f() {
    }

    public void g() {
    }
}

class MoreUseful extends Useful {
    @Override
    public void f() {
    }

    @Override
    public void g() {
    }

    public void h() {
    }

    public void i() {
    }

    public void j() {
    }
}

public class RTTI {
    public static void main(String[] args) {
        Useful[] usefuls = {new Useful(), new MoreUseful()};
        usefuls[0].f();
        usefuls[1].g();
        //向下转型
        ((MoreUseful) usefuls[1]).h();
        //这里报错 ClassCastException
        ((MoreUseful) usefuls[0]).h();
    }
}
